fn main() {
    println!("rust 的 string 是特殊的 vec , 是很复杂的!!!");
    println!("不同编码存入 string 后,在 rust 要随意读取, 而默认是utf8的, 一旦存储了其他编码格式, 所取得的结果将是未知的!!!");

    let hello = String::from("السلام عليكم");
    println!("{}", hello);
    let hello = String::from("Dobrý den");
    println!("{}", hello);
    let hello = String::from("Hello");
    println!("{}", hello);
    let hello = String::from("שָׁלוֹם");
    println!("{}", hello);
    let hello = String::from("नमस्ते");
    println!("{}", hello);
    let hello = String::from("こんにちは");
    println!("{}", hello);
    let hello = String::from("안녕하세요");
    println!("{}", hello);
    let hello = String::from("你好");
    println!("{}", hello);
    let hello = String::from("Olá");
    println!("{}", hello);
    let hello = String::from("Здравствуйте");
    println!("{}", hello);
    let hello = String::from("Hola");
    println!("{}", hello);

    // 不允许索引
    // println!("{}", &hello[1]);// `String` cannot be indexed by `{integer}`

    //
    let s = &hello[0..4];
    println!("{}", s);

    let s = &hello[0..1];
    println!("{}", s);

    let hello = String::from("Здравствуйте");
    // let s = &hello[0..1]; // 不足 2 个字节, 无法取到第一个元素的引用;崩溃
    let s = &hello[0..2];
    println!("{}", s);

    // 遍历
    for c in hello.chars() {
        // 正常输出
        println!("{}", c);
    }
    for c in hello.bytes() {
        // 输出 byte 即数字
        println!("{}", c);
    }
}
